package Tiempo;

public class Temporizador extends Thread {

	private INotificable notificable;
	private int intervalo;
	private boolean activo;
	private boolean morir;

	public Temporizador(INotificable notificable, int intervalo) {
		this.notificable = notificable;
		this.intervalo = intervalo;
		this.activo = false;
		this.morir = false;
	}

	public void run() {

		while (!morir) {
			try {
				Thread.sleep(intervalo);

				if (!activo)
					synchronized(this) {
						this.wait();
					}
				else
					notificable.notificar();

			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}

	}

	public synchronized void activar() {
		this.activo = true;
		this.notify();

	}

	public void parar() {
		this.activo = false;
	}
	
	public void matar() {
		this.morir = true;
	}
	

}
